package com.ssyt.yt1.day8;

class Boy {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		// 1、this表示当前对象
		this.name = name;
	}

	public void play() {
		// 2、this表示当前对象
		new Ball().showState(this);
	}
}

class Ball {

	public void showState(Boy boy) {
		System.out.println("球被" + boy.getName() + "玩~");
	}
}

class A {

	public void print() {
		System.out.println("A");
	}

	public void invoke() {
		// 3、this表示当前对象
		// this.print()，很多人会误认会结果就是打印当前类里的print方法（也就是A），但是当前的print方法已经被子类给重写了，所以最后的打印结果为B！
		this.print();
	}
}

class B extends A {

	@Override
	public void print() {
		System.out.println("B");
	}

	@Override
	public void invoke() {
		super.invoke();
	}
}

/**
 * this表示当前对象的三种情况！
 * 
 * @author Administrator
 *
 */
public class ThisDemo {

	public static void main(String[] args) {
		Boy boy = new Boy();
		boy.setName("yf");
		boy.play();

		new B().invoke();
	}
}
